package com.zan.pattern.combination;

/**
 * @Author Zan
 * @Create 2024/4/26 16:44
 * @Description : 菜单组件 : 属于抽象根节点
 * @ClassName: MenuComponent
 */
public abstract class MenuComponent {

    // 菜单组件的名称
    protected String name;

    // 菜单组件的层级
    protected int level;

    // 菜单项也就是根目录都没有这两个功能，子菜单有这种功能
    // 添加子菜单
    public void add(MenuComponent menuComponent) {
        throw new UnsupportedOperationException();
    }

    // 移除子菜单
    public void remove(MenuComponent menuComponent) {
        throw new UnsupportedOperationException();
    }

    // 获取指定的子菜单
    public MenuComponent getChild(int index) {
        throw new UnsupportedOperationException();
    }

    // 获取菜单或者菜单项的名称
    public String getName() {
        return name;
    }

    // 打印菜单名称的方法（包含子菜单和子菜单项）
    public abstract void print();
}
